/**
 * 与表单相关的方法
 * 
 * @author 姜友瑶
 */

var MForm = function() {
	"use strict";// 严格模式

	

	return {
		
		/** 表单默认参数 */
		initParam:{
			beforeSubmit:null,//表单提交之前调用函数
			afterSubmit:null,//刷新数据回调函数
			formSelecter : "#dataform",//表单默认选择器
			isvalid : true,//是否对表单进行验证
			validform:null,//验证表单
			extendParam:{},//需要添加到表单中的额外参数会一起提交到服务器
			invokeUrl:"",//数据提交地址
			layerIndex:"",//layer当前窗口的index值（用来关闭ifram）
		},
		//==============================================initParam end
		
		/**
		 * 表单提交前，初始化一些必要的事情
		 */
		initForm : function(_initParam) {
			this.initParam = $.extend(this.initParam, _initParam);
			//对表单进验证
			if (this.initParam.isvalid) {
				this.initParam.validform = MValidform.validform(this.initParam.formSelecter);
			}
			this.initParam.layerIndex = parent.layer.getFrameIndex(window.name);
			return this;
		},
		
		//============================================== initForm end
		
		/**
		 * 提交表单数据
		 */
		submit : function() {
			
			var _this=this;
			
			//验证表单
			if(this.initParam.isvalid){
				if(!this.initParam.validform.check()){
					return false;
				}
			}
			//调用beforesubmit
			if(this.initParam.beforeSubmit){
				this.initParam.beforeSubmit();
			}
			//提交表单数据
			
				$.AjaxProxy({

					p :$.extend( MForm.toJson(_this.initParam.formSelecter), _this.initParam.extendParam)
					
				}).invoke(_this.initParam.invokeUrl, function(loj) {
					
					//执行成功弹出提示层
					layer.alert(loj.getValue("info"), {
						icon : 1
					}, function(inindex) {
						
						// 关闭提示层
						layer.close(inindex);
						
						// 自定义刷新回调
						if (_this.initParam.afterSubmit) {
							_this.initParam.afterSubmit();
						} 
						
						// 关闭iframe层
						if (_this.initParam.layerIndex) {
							parent.layer.close(_this.initParam.layerIndex);
						} 
						
						
						
					});
				});
				
				
			},
		
		//==============================================submit end
			
		/**
		 * form表单数据转json
		 */
		toJson : function(form) {
			var result = {};
			var fieldArray = $(form).serializeArray();
			for (var i = 0; i < fieldArray.length; i++) {
				var field = fieldArray[i];
				if (field.name in result) {
					result[field.name] += "," + field.value;
				} else {
					result[field.name] = field.value;
				}
			}
			return result;
		},
		//==============================================toJson end		
		
	}
}();
